package com.dc.designPattern._0_设计原则._6_lod.step1;

import java.util.ArrayList;
import java.util.List;

/**
 * Description: 学校管理类
 *
 *  分析 SchoolManager 类的直接朋友类有哪些 Employee、CollegeManager
 *  CollegeEmployee 不是 直接朋友 而是一个陌生类，这样违背了 迪米特法则
 *
 * @author: gdc
 * @date: 2021/7/23
 * @version 1.0
 */
public class SchoolManager {
    /**
     * 返回学校总部的员工
     * @return              学校总部员工列表
     */
    public List<Employee> getAllEmployee() {
        List<Employee> list = new ArrayList<Employee>();
        for (int i = 0; i < 5; i++) {
            //这里我们增加了 5 个员工到 list
            Employee emp = new Employee();
            emp.setId("学校总部员工 id= " + i);
            list.add(emp);
        }
        return list;
    }

    /**
     * 该方法完成输出学校总部和学院员工信息(id)
     */
    public void printAllEmployee(CollegeManager collegeManager) {
        //分析问题
        //1. 这里的 CollegeEmployee 不是 SchoolManager 的直接朋友
        //2. CollegeEmployee 是以局部变量方式出现在 SchoolManager
        //3. 违反了 迪米特法则 //获取到学院员工
        List<CollegeEmployee> collegeEmployeeList = collegeManager.getAllEmployee();
        System.out.println("------------学院员工------------");
        for (CollegeEmployee collegeEmployee : collegeEmployeeList) {
            System.out.println(collegeEmployee.getId());
        }

        //获取到学校总部员工
        List<Employee> employeeList = this.getAllEmployee();
        System.out.println("------------学校总部员工------------");
        for (Employee employee : employeeList) {
            System.out.println(employee.getId());
        }
    }
}